##==================================================================================================
##  EVE - Expressive Vector Engine
##  Copyright : EVE Project Contributors
##  SPDX-License-Identifier: BSL-1.0
##==================================================================================================

##==================================================================================================
## Setup aggregation of tests
##==================================================================================================
add_custom_target(exhaustive.real.math.exe)
add_custom_target(exhaustive.real.math.scalar.exe)
add_custom_target(exhaustive.real.math.simd.exe)
add_dependencies(exhaustive.real.math.exe exhaustive.real.math.scalar.exe)
add_dependencies(exhaustive.real.math.exe exhaustive.real.math.simd.exe)
add_dependencies(exhaustive.real.scalar.exe exhaustive.real.math.scalar.exe)
add_dependencies(exhaustive.real.simd.exe exhaustive.real.math.simd.exe)
add_dependencies(exhaustive.real.exe exhaustive.real.math.exe)

##==================================================================================================
## Elementwise function unit tests
##==================================================================================================
make_all_units(ROOT exhaustive.real.math NAME acos                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME acosd                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME acosh                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME acospi                ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME acot                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME acotd                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME acoth                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME acotpi                ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME acsc                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME acscd                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME acsch                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME acscpi                ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME asec                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME asecd                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME asech                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME asecpi                ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME asin                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME asind                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME asinh                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME asinpi                ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME atan                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME atand                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME atanh                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME atanpi                ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME cos                   ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME cosd                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME cospi                 ARCH scalar simd TYPES ${signed_types_32}  )
make_all_units(ROOT exhaustive.real.math NAME cosh                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME cot                   ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME cotd                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME coth                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME cotpi                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME csc                   ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME cscd                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME csch                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME cscpi                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME deginrad              ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME exp                   ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME exp10                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME exp2                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME expm1                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME log                   ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME log10                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME log1p                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME log2                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME radindeg              ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME radinpi               ARCH scalar simd TYPES ${real_types_32}    )
##make_all_units(ROOT exhaustive.real.math NAME rempio2               ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME sec                   ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME secd                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME sech                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME secpi                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME sin                   ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME sincos                ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME sind                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME sindcosd              ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME sinh                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME sinhcosh              ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME sinpi                 ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME sinpicospi            ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME tan                   ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME tand                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME tanh                  ARCH scalar simd TYPES ${real_types_32}    )
make_all_units(ROOT exhaustive.real.math NAME tanpi                 ARCH scalar simd TYPES ${real_types_32}    )
